package cn.dengyongsheng.controllers;


import cn.dengyongsheng.models.User;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

import java.util.HashMap;
import java.util.Map;

@Controller
@RequestMapping("/")
@ResponseBody
public class UserController {
    // 保存user对象的容器
    public static Map<Integer, User> userMap = new HashMap<Integer, User>();

    /**
     * 获取完整列表
     */
    @GetMapping("/")
    public String getAll() {
        return userMap.toString();
    }

    /**
     * get方法，与查找、获取操作对应
     */
    @GetMapping("/{id}")
    public String get(@PathVariable Integer id) {
        if (userMap.containsKey(id)) {
            return userMap.get(id).toString();
        } else {
            return "没有id=" + id + "的user对象";
        }
    }

    /**
     * post方法，与新增操作对应
     */
    @PostMapping
    public String add(@RequestParam Integer id, @RequestParam String name) {
        if (userMap.containsKey(id)) {
            return "已经存在id=" + id + "的user对象，无法新增";
        } else {
            User user = new User(id, name);
            userMap.put(id, user);
            return user.toString();
        }
    }

    /**
     * put方法，与修改操作相对应
     */
    @PutMapping("/{id}")
    public String modify(@PathVariable Integer id, @RequestParam String name) {
        if (userMap.containsKey(id)) {
            User user = userMap.get(id);
            user.name = name;
            // userMap.replace(id, user);
            return userMap.get(id).toString();
        } else {
            return "没有id=" + id + "的user对象，无法修改";
        }
    }

    /**
     * delete 方法，与删除操作相对应
     */
    @DeleteMapping("/{id}")
    public String delete(@PathVariable Integer id) {
        if (userMap.containsKey(id)) {
            User user = userMap.get(id);
            userMap.remove(id);
            return "已经删除id=" + id + "的对象：" + user.toString();
        } else {
            return "没有id=" + id + "的user对象，无法删除";
        }
    }
}
